package com.powernode.dataservice.mapper;

import com.powernode.api.model.ProductInfo;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

public interface ProductInfoMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(ProductInfo record);

    int insertSelective(ProductInfo record);

    ProductInfo selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(ProductInfo record);

    int updateByPrimaryKey(ProductInfo record);

    /**
     * 所有产品的平均年利率
     * @return
     */
    BigDecimal selectAvgRate();

    /**
     * 通过类型获取 前 3个 产品
     * @param type 产品类型
     * @param index 从所引开始查
     * @param num 查多少个
     * @return 产品集合
     */
    List<ProductInfo> selectProductByType(int type, int index, int num);

    /*悲观锁 查询 产品*/
    ProductInfo selectByIdForUpdate(Integer productId);


    /**
     * 扣除产品剩余投资金额
     * @param productId
     * @param bidMoney
     * @return
     */
    int reduceLeftMoney(Integer productId, BigDecimal bidMoney);

    /**
     * 修改产品满标状态
     * @param productId
     * @param date
     * @return
     */
    int updateFullTimeStatus(Integer productId, Date date);

    /**
     * 获取指定时间范围的 满标产品集合
     * @param statDate  开始时间
     * @param endDate 结束时间
     * @return
     */
    List<ProductInfo> selectFullProduct(Date statDate, Date endDate);


    /**
     * 修改 产品的状态
     * @param id
     * @param status
     * @return
     */
    int updateStatus(Integer id, int status);

}